In shared memory multiprocessor systems several copies of the same memory line can be cached in the system, hence a coherence mechanism is required to maintain consistency among the copies. The two most common coherence schemes are directory-based protocols and snooping protocols. Directory based cache coherence solves the bandwidth problem of snoopy schemes, but introduces directory storage overhead that can grow faster than linearly with the number of shared caches. For example, traditional full map bit-vector directories do not scale well with Moore's Law due to memory overhead concerns.
Traditional dynamically tagged directories use special-purpose pointer caches, which are subject of two types of overflow: 1) pointer overflow—pointer overflow limits the number of sharers; and/or 2) set overflow—set overflow forces premature invalidation of cache lines.
Traditional full map bit-vector directory requires an entry for each cache line sized memory line. Given that, the number of entries in the traditional full map bit-vector directory for moderately large-scale multiprocessors can be very large. This prevents full map bit-vector directories from being embedded either into hub or processor chips.